// 产出项目路径(静态资源基于/public目录, 模板文件基于/views目录)
var basePath='/pc/';

// 按需编译，只编译用到的资源
fis.set('project.files', ['*.blade.php', 'map.json']);

// 采用 commonJs 规范支持模块化组建开发
fis.hook('amd', {
  packages: [

    // 短路径支持
    // 可以通过 require('/libs/alert') 依赖 `static/libs/alert.js`
    {
      name: 'libs',
      location: './static/libs'
    },
    { //插件路径
      name:'plugins',
      location:'./static/js/plugins'
    }
  ],
  shim:{ //指定非amd模块js文件的依赖(主要是针对jquery amd后的jq插件)
    'jquery':{
      exports:'$'
    },
    'easing':['jquery'],
    'fullpage':['jquery'],
    'libs/tab':['jquery']
  },
  paths:{ // 指定文件别名
    'jquery':'./static/js/jquery/1.8.3/jquery.min',
    'easing':'./static/js/plugins/easing/jquery.easing.min',
    'fullpage':'./static/js/plugins/fullpage/jquery.fullpage.min',
    'underscore':'./static/js/underscore/1.8.3/underscore-min'
  }
});

//使用less编译css
fis.match('*.less',{
  rExt:'.css',
  parser:fis.plugin('less')
});

// 默认认为所有的资源都是静态资源，放在 /public basePath目录下面
fis.match('**', {
  release: '/public'+basePath+'$0',
  url: basePath+'$0'
});

// static 下面本来就是静态资源，去掉多出来的一层目录。
fis.match('/static/(**)', {
  release: '/public'+basePath+'$1',
  url: basePath+'$1'
});

fis.match('*.blade.php', {
  // 启用 blade 语法识别插件
  //
  // 1. 转换所有的 @require(path) 路径
  // 2. 识别 @script()@endscript 让内容进行 js 标准化。
  // 3. 识别 @style()@endstyle 让内容进行 css 标准化。
  // 4. 添加钩子，方便运行时加载当前模板依赖。
  preprocessor: fis.plugin('extlang', {
    type: 'blade'
  }),

  release: '/resources/views'+basePath+'$&',
  url: basePath+'$&',

  // 将资源信息写入 map.json 里面，方便运行时查找依赖。
  useMap: true
});

// 省掉 page 这个目录。
fis.match('/page/(**.blade.php)', {
  release: '/resources/views'+basePath+'$1',
  url: basePath+"$1"
});

// 配置 map.json 产出路径。
fis.match('/map.json', {
  release: '/resources/map/map.json',
});

// 让所有lib下的 js 都用模块化的方式开发。
fis.match('libs/*.js', {
  isMod: true
});

// static/js 下面放非模块化 js
fis.match('/static/js/*.js', {
  isMod: false,
});
fis.match('/static/js/plugins/**.js', {
  isMod: false,
});
fis.match('/static/js/**.js', {
  isMod: false,
});

// 支持前端模板，支持 js 内嵌后，直接翻译成可执行的 function
fis.match('*.tmpl', {
  parser: fis.plugin('utc'),
  rExt: '.js',
  release: false
});


// 在 prod 环境下，开启各种压缩和打包。
fis
  .media('prod')

  .match('*.js', {
    optimizer: fis.plugin('uglify-js'),
    useHash:true
  })

  .match('*.css', {
    optimizer: fis.plugin('clean-css'),
    useHash:true
  })

  .match('*.png', {
    optimizer: fis.plugin('png-compressor'),
    useHash:true
  })

  // pack 相关

  // libs 目录下面的 js 打成一个
  .match('/static/libs/**.js', {
    packTo: 'pkg/lib.js'
  })

  // components 目录下面的打成一个。
  .match('/components/**.js', {
    packTo: '/pkg/components.js'
  })
